Packages
library(psych)
library(corrplot)
library(ggplot2)
library(car)
library(naniar)
library(REdaS)
library(zoo)
library(foreign)
library(lavaan)
library(lavaanPlot)
library(ggcorrplot)
library(lares)
library(MVN)
library(dplyr)
library(knitr)
Data
df <- read.csv2('Case Study III_Structural Equation Modeling.csv', na.strings = '999', sep = ',')
df <- df[, c(1:23, 25:36)]
DT::datatable(df)
Dimensions
dim_before_na <- dim(df)
dim_before_na
## [1] 553 35
Summary Statistics
DT::datatable(describe(df))
Missing Analysis
gg_miss_var(df, show_pct = TRUE)
This is not too bad, we can see that SAT_3 is the one with the most NA values, up to 7%.
naniar::vis_miss(df)
If we look at this plot though we see that the missing values are in a lot of the observations. Therefore, we will to handle the Confirmatory Analysis with a method for replacing those missing values.
Dimensions after listwise deletion
dim_after_na <- dim(na.omit(df))
dim_after_na
## [1] 309 35
na_remove_count <- dim_after_na - dim_before_na
na_remove_count[1] <- abs(na_remove_count[1])
Thus, we remove a lot of observations with listwise deletion, up to 244
# We do list-wise deletion as ask by the TA
df_listwise <- na.omit(df)
Assumptions for EFA
From Assistant Please only consider variables image1 to image22, and use listwise deletion to handle missing data before starting exploratory factor analysis.
Basic Assumptions
df_1 <- df_listwise[,1:22]
Normality - Shapiro Wilk’s test
apply(df_1, 2, shapiro.test)
## $Im1
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92373, p-value = 1.851e-11
##
##
## $Im2
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92499, p-value = 2.411e-11
##
##
## $Im3
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92371, p-value = 1.844e-11
##
##
## $Im4
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92014, p-value = 8.873e-12
##
##
## $Im5
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.91233, p-value = 1.921e-12
##
##
## $Im6
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.82674, p-value < 2.2e-16
##
##
## $Im7
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.84612, p-value < 2.2e-16
##
##
## $Im8
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.80379, p-value < 2.2e-16
##
##
## $Im9
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92158, p-value = 1.187e-11
##
##
## $Im10
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.7981, p-value < 2.2e-16
##
##
## $Im11
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.85448, p-value < 2.2e-16
##
##
## $Im12
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.86819, p-value = 1.38e-15
##
##
## $Im13
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.89122, p-value = 4.669e-14
##
##
## $Im14
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.79446, p-value < 2.2e-16
##
##
## $Im15
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.91767, p-value = 5.414e-12
##
##
## $Im16
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90488, p-value = 4.853e-13
##
##
## $Im17
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90676, p-value = 6.818e-13
##
##
## $Im18
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.93189, p-value = 1.081e-10
##
##
## $Im19
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90393, p-value = 4.097e-13
##
##
## $Im20
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92824, p-value = 4.834e-11
##
##
## $Im21
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.89126, p-value = 4.7e-14
##
##
## $Im22
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.94596, p-value = 3.211e-09
We reject null-hypothesis for all variables and thus don’t accept normality of the data.
Multivariate normality - Mardia’s Multivariate Normality Test
To say the data are multivariate normal:
• z-kurtosis < 5 (Bentler, 2006) and the P-value should be ≥ 0.05. • The plot should also form a straight line (Arifin, 2015).
MVN::mvn(df_1, mvnTest = "mardia", multivariatePlot = "qq", desc = FALSE)
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 5693.58260956909 0 NO
## 2 Mardia Kurtosis 48.5688465675536 0 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling Im1 9.2497 <0.001 NO
## 2 Anderson-Darling Im2 9.0183 <0.001 NO
## 3 Anderson-Darling Im3 9.0339 <0.001 NO
## 4 Anderson-Darling Im4 9.6661 <0.001 NO
## 5 Anderson-Darling Im5 10.8951 <0.001 NO
## 6 Anderson-Darling Im6 18.6917 <0.001 NO
## 7 Anderson-Darling Im7 17.3319 <0.001 NO
## 8 Anderson-Darling Im8 21.2033 <0.001 NO
## 9 Anderson-Darling Im9 9.2733 <0.001 NO
## 10 Anderson-Darling Im10 22.1406 <0.001 NO
## 11 Anderson-Darling Im11 16.4825 <0.001 NO
## 12 Anderson-Darling Im12 14.7775 <0.001 NO
## 13 Anderson-Darling Im13 12.4484 <0.001 NO
## 14 Anderson-Darling Im14 21.7494 <0.001 NO
## 15 Anderson-Darling Im15 10.1132 <0.001 NO
## 16 Anderson-Darling Im16 11.4400 <0.001 NO
## 17 Anderson-Darling Im17 10.7737 <0.001 NO
## 18 Anderson-Darling Im18 8.0021 <0.001 NO
## 19 Anderson-Darling Im19 12.4287 <0.001 NO
## 20 Anderson-Darling Im20 7.9905 <0.001 NO
## 21 Anderson-Darling Im21 13.1862 <0.001 NO
## 22 Anderson-Darling Im22 6.1723 <0.001 NO
The data are not normally distributed at multivariate level. Our extraction method PAF can deal with this non-normality.
Multicolinearity
# Correlation Values Matrix
M <- cor(df_1)
# P-Value
p.mat <- cor_pmat(df_1)
# Correlation Plot
ggcorrplot(M, hc.order = TRUE, type = "lower", lab = TRUE, p.mat = p.mat, sig.level=0.05, lab_size = 2, tl.cex = 10,outline.col = "white", ggtheme = ggplot2::theme_minimal(), colors = c("#823038", "white", "#2596be"))
# Ranked Cross-Correlations
corr_cross(df_1, # name of dataset
max_pvalue = 0.05, # display only significant correlations (at 5% level)
top = 9 # display top 10 couples of variables (by correlation coefficient)
)
As we can see, We have some multicolinearity amongst the variables, at least 6 variables can be considered with high-colinearity. Im3+Im4, Im1+Im2m, Im6+Im7, Im4+Im5, Im8+Im10 and Im8+Im14.
A guide to appropriate use of Correlation coefficient in medical research
Factors Analysis Assumptions
Kaiser-Meyer-Olkin test (KMO)
KMO: Find the Kaiser, Meyer, Olkin Measure of Sampling Adequacy
KMO Index
KMOTEST <- KMO(M)
sort(KMOTEST$MSAi)
## Im6 Im10 Im14 Im2 Im1 Im7 Im20 Im17
## 0.7791619 0.8192843 0.8206186 0.8275596 0.8316756 0.8342908 0.8369658 0.8459668
## Im18 Im4 Im3 Im13 Im12 Im22 Im21 Im11
## 0.8479170 0.8623498 0.8647696 0.8749019 0.8763560 0.8850423 0.8930068 0.9101259
## Im16 Im8 Im9 Im19 Im15 Im5
## 0.9168866 0.9231784 0.9240378 0.9432565 0.9558911 0.9616355
Most KMO Index are Middling, Meritorious or even Marvelous. Im6 is the lowest KMO index being Middling.
KMO Overall Measure of sampling adequacy
KMOTEST$MSA
## [1] 0.8739058
With 0.87, sampling adequacy is very high.
Bartlett’s Test of Sphericity
cortest.bartlett(df_1)
## $chisq
## [1] 5268.134
##
## $p.value
## [1] 0
##
## $df
## [1] 231
EFA can be done as the test indicates a p-value under 0 (P-value < 0) and thus can reject the null hypothesis (Identity Matrix).
Exploratory Factor analysis
Determine the number of factors
- Kaiser’s eigenvalue > 1 rule.
- Cattell’s scree test.
- Parallel analysis.
- Very simple structure (VSS).
- Velicer’s minimum average partial (MAP).
Kaiser’s eigevalue > 1 rule
Factors with eigenvalues > 1 are retained. Eigenvalue can be interpreted as the proportion of the information in a factor. The cut-off of 1 means the factor contains information = 1 item. Thus it is not worthwhile keeping factor with information < 1 item.
fa_result <- fa(df_1, rotate = "varimax", fm = "pa")
factors_kaiser <- sum(fa_result$e.values>1)
print(paste("Kaiser-Criterion:", factors_kaiser,"Factors"))
## [1] "Kaiser-Criterion: 6 Factors"
According to the Kaiser-Criterion, we would use 6 factors.
Catell’s scree test
We can do a factor analysis using rotation varimax
fa_result <- fa(df_1, rotate = "varimax", fm = "pa")
n_factors <- length(fa_result$e.values)
scree <- data.frame(Factor_n = as.factor(1:n_factors), Eigenvalue = fa_result$e.values)
ggplot(scree, aes(x = Factor_n, y = Eigenvalue, group = 1)) +
geom_point() + geom_line() +
xlab("Number of factors") +
ylab("Initial eigenvalue") +
labs( title = "Scree Plot",
subtitle = "(Based on the unreduced correlation matrix)") +
geom_hline(yintercept = 1, color="#2596be") + theme_minimal()
We would say 6 factors (above blue line of eigenvalue > 1)
Parallel analysis
parallel <- fa.parallel(df_1, fm = "pa", fa = "fa")
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
print(parallel)
## Call: fa.parallel(x = df_1, fm = "pa", fa = "fa")
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
##
## Eigen Values of
##
## eigen values of factors
## [1] 8.52 1.78 0.92 0.76 0.65 0.58 0.20 0.13 -0.09 -0.12 -0.21 -0.25
## [13] -0.29 -0.34 -0.37 -0.40 -0.42 -0.42 -0.47 -0.51 -0.54 -0.60
##
## eigen values of simulated factors
## [1] 0.61 0.45 0.38 0.32 0.27 0.23 0.19 0.14 0.10 0.06 0.03 -0.01
## [13] -0.05 -0.08 -0.12 -0.16 -0.19 -0.23 -0.27 -0.30 -0.35 -0.39
##
## eigen values of components
## [1] 9.11 2.46 1.58 1.36 1.26 1.14 0.79 0.73 0.56 0.46 0.36 0.33 0.30 0.28 0.25
## [16] 0.22 0.19 0.18 0.14 0.11 0.10 0.08
##
## eigen values of simulated components
## [1] NA
As we can see in parallel analysis, it also suggest 6 factors, nevertheless, factors up to 7 or 8 can also be considered.
Very simple structure (VSS) criterion and Velicer’s minimum average partial (MAP) criterion
vss(df_1, rotate = "varimax", fm = "pa")
##
## Very Simple Structure
## Call: vss(x = df_1, rotate = "varimax", fm = "pa")
## VSS complexity 1 achieves a maximimum of 0.84 with 1 factors
## VSS complexity 2 achieves a maximimum of 0.9 with 2 factors
##
## The Velicer MAP achieves a minimum of 0.04 with 8 factors
## BIC achieves a minimum of -334.88 with 8 factors
## Sample Size adjusted BIC achieves a minimum of -71.64 with 8 factors
##
## Statistics by number of factors
## vss1 vss2 map dof chisq prob sqresid fit RMSEA BIC SABIC complex
## 1 0.84 0.00 0.047 209 2756 0.0e+00 16.0 0.84 0.199 1558 2221 1.0
## 2 0.71 0.90 0.044 188 2143 0.0e+00 10.1 0.90 0.183 1065 1661 1.3
## 3 0.62 0.89 0.045 168 1773 1.0e-265 7.6 0.92 0.176 810 1343 1.4
## 4 0.52 0.84 0.047 149 1455 8.0e-213 5.9 0.94 0.168 600 1073 1.7
## 5 0.44 0.76 0.044 131 1139 3.0e-160 4.3 0.96 0.158 388 803 1.9
## 6 0.39 0.63 0.042 114 636 1.9e-73 3.0 0.97 0.122 -18 344 2.1
## 7 0.39 0.60 0.045 98 296 1.1e-21 2.3 0.98 0.081 -266 45 1.9
## 8 0.37 0.54 0.036 83 141 7.5e-05 1.7 0.98 0.047 -335 -72 2.0
## eChisq SRMR eCRMS eBIC
## 1 2321 0.127 0.134 1122
## 2 1213 0.092 0.102 135
## 3 837 0.077 0.090 -126
## 4 588 0.064 0.080 -266
## 5 364 0.051 0.067 -387
## 6 157 0.033 0.047 -497
## 7 74 0.023 0.035 -488
## 8 19 0.012 0.019 -456
VSS indicates 1/2 factors (vss1 largest at 1 and 2 factors), while MAP indicates 8 factors (map smallest at 8 factors).
VSS criterion for the number of factors (in R’s psych package)
Extraction Method
Our data are not normally distributed, hence the extraction method of choice is principal axis factoring (PAF), because it does not assume normality of data (Brown, 2015). The rotation method is varimax.
We run EFA by
- fixing the number of factors as decided from previous step. 6 or 8 factors are reasonable.
- choosing an appropriate extraction method. We use PAF, fm = “pa” (Principal Axis Factoring).
- choosing an appropriate rotation method. We use varimax, rotate = “varimax”.
6 Factors
We will compute the loadings with 6 factors and varimax rotation
What we need to look for:
- Factor loadings
Multiple threshold exist (as many rules of thumb), in our analysis we will use the standard 0.4 cut-off.
What thresholds should I use for factor loading cut-offs?
- Communalities
We use the standard cut-off of 0.5, all above are good.
fa_result <- fa(df_1, nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1, nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA1 PA2 PA4 PA3 PA6 h2 u2 com
## Im1 0.850 0.841 0.159 1.34
## Im2 0.842 0.796 0.204 1.25
## Im3 0.831 0.874 0.126 1.58
## Im4 0.850 0.893 0.107 1.51
## Im5 0.603 0.524 0.476 1.98
## Im6 0.783 0.708 0.292 1.31
## Im7 0.445 0.739 0.767 0.233 1.75
## Im8 0.725 0.716 0.284 1.72
## Im9 0.480 0.453 0.547 2.80
## Im10 0.821 0.793 0.207 1.37
## Im11 0.537 0.461 0.539 2.24
## Im12 0.796 0.758 0.242 1.42
## Im13 0.748 0.725 0.275 1.64
## Im14 0.794 0.760 0.240 1.43
## Im15 0.589 0.641 0.359 2.86
## Im16 0.468 0.461 0.539 3.00
## Im17 0.439 0.416 0.666 0.334 4.39
## Im18 0.438 0.605 0.395 4.18
## Im19 0.478 0.405 0.541 0.459 3.38
## Im20 0.839 0.775 0.225 1.21
## Im21 0.766 0.680 0.320 1.34
## Im22 0.798 0.804 0.196 1.56
##
## PA5 PA1 PA2 PA4 PA3 PA6
## SS loadings 2.864 2.782 2.608 2.514 2.395 2.080
## Proportion Var 0.130 0.126 0.119 0.114 0.109 0.095
## Cumulative Var 0.130 0.257 0.375 0.489 0.598 0.693
## Proportion Explained 0.188 0.183 0.171 0.165 0.157 0.136
## Cumulative Proportion 0.188 0.370 0.541 0.706 0.864 1.000
##
## Mean item complexity = 2.1
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 231 with the objective function = 17.57 with Chi Square = 5268.134
## df of the model are 114 and the objective function was 2.15
##
## The root mean square of the residuals (RMSR) is 0.033
## The df corrected root mean square of the residuals is 0.047
##
## The harmonic n.obs is 309 with the empirical chi square 157.019 with prob < 0.00471
## The total n.obs was 309 with Likelihood Chi Square = 635.908 with prob < 1.9e-73
##
## Tucker Lewis Index of factoring reliability = 0.7871
## RMSEA index = 0.1217 and the 90 % confidence intervals are 0.1128 0.1312
## BIC = -17.693
## Fit based upon off diagonal values = 0.993
## Measures of factor score adequacy
## PA5 PA1 PA2 PA4 PA3
## Correlation of (regression) scores with factors 0.933 0.949 0.930 0.906 0.930
## Multiple R square of scores with factors 0.871 0.900 0.864 0.821 0.865
## Minimum correlation of possible factor scores 0.741 0.800 0.729 0.643 0.731
## PA6
## Correlation of (regression) scores with factors 0.904
## Multiple R square of scores with factors 0.817
## Minimum correlation of possible factor scores 0.635
1. Factor loadings
We can see that we have 3 cross-loadings, Im7, Im17 and Im19.
Cross-Loadings (Measured with Complexity measure: com > 1):
Im17 > Im19 > Im7 > 1
2. Communalities
On the table, it is column h2
Low Communalities are :
Im9 < Im11 < Im16 < 0.5
Removing Im17 (Lowest Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17")], nfactors = 6, rotate = "varimax",
## fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA2 PA3 PA4 PA6 h2 u2 com
## Im1 0.855 0.848 0.1519 1.33
## Im2 0.845 0.799 0.2007 1.25
## Im3 0.839 0.884 0.1159 1.55
## Im4 0.871 0.923 0.0769 1.46
## Im5 0.605 0.526 0.4743 1.97
## Im6 0.860 0.795 0.2050 1.15
## Im7 0.792 0.786 0.2142 1.51
## Im8 0.673 0.429 0.692 0.3077 1.99
## Im9 0.471 0.449 0.5511 2.83
## Im10 0.873 0.878 0.1222 1.32
## Im11 0.548 0.458 0.5423 2.13
## Im12 0.835 0.805 0.1950 1.33
## Im13 0.757 0.738 0.2618 1.63
## Im14 0.830 0.818 0.1820 1.40
## Im15 0.593 0.643 0.3570 2.80
## Im16 0.468 0.461 0.5390 3.00
## Im18 0.421 0.5791 4.38
## Im19 0.480 0.403 0.538 0.4623 3.36
## Im20 0.836 0.770 0.2296 1.21
## Im21 0.773 0.684 0.3157 1.30
## Im22 0.800 0.804 0.1959 1.55
##
## PA1 PA5 PA2 PA3 PA4 PA6
## SS loadings 2.778 2.690 2.447 2.382 2.367 2.057
## Proportion Var 0.132 0.128 0.117 0.113 0.113 0.098
## Cumulative Var 0.132 0.260 0.377 0.490 0.603 0.701
## Proportion Explained 0.189 0.183 0.166 0.162 0.161 0.140
## Cumulative Proportion 0.189 0.371 0.538 0.699 0.860 1.000
##
## Mean item complexity = 1.9
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 210 with the objective function = 16.063 with Chi Square = 4821.666
## df of the model are 99 and the objective function was 1.019
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.036
##
## The harmonic n.obs is 309 with the empirical chi square 81.338 with prob < 0.902
## The total n.obs was 309 with Likelihood Chi Square = 301.667 with prob < 2.4e-22
##
## Tucker Lewis Index of factoring reliability = 0.9055
## RMSEA index = 0.0813 and the 90 % confidence intervals are 0.0711 0.0921
## BIC = -265.934
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA2 PA3 PA4
## Correlation of (regression) scores with factors 0.935 0.959 0.943 0.931 0.915
## Multiple R square of scores with factors 0.875 0.920 0.889 0.866 0.837
## Minimum correlation of possible factor scores 0.750 0.841 0.777 0.733 0.673
## PA6
## Correlation of (regression) scores with factors 0.924
## Multiple R square of scores with factors 0.854
## Minimum correlation of possible factor scores 0.709
Removing Im18 (Lowest loadings and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18")], nfactors = 6,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA2 PA3 PA4 PA6 h2 u2 com
## Im1 0.859 0.853 0.1475 1.32
## Im2 0.846 0.798 0.2016 1.24
## Im3 0.844 0.895 0.1053 1.55
## Im4 0.873 0.928 0.0722 1.47
## Im5 0.599 0.520 0.4797 2.00
## Im6 0.859 0.787 0.2125 1.14
## Im7 0.810 0.799 0.2007 1.44
## Im8 0.652 0.448 0.685 0.3146 2.12
## Im9 0.461 0.427 0.5731 2.87
## Im10 0.877 0.890 0.1099 1.33
## Im11 0.549 0.458 0.5420 2.14
## Im12 0.853 0.835 0.1654 1.31
## Im13 0.743 0.723 0.2772 1.67
## Im14 0.829 0.823 0.1771 1.42
## Im15 0.597 0.644 0.3563 2.76
## Im16 0.470 0.460 0.5402 2.98
## Im19 0.482 0.535 0.4651 3.33
## Im20 0.838 0.772 0.2276 1.20
## Im21 0.773 0.681 0.3192 1.29
## Im22 0.802 0.805 0.1952 1.54
##
## PA1 PA5 PA2 PA3 PA4 PA6
## SS loadings 2.738 2.565 2.379 2.353 2.223 2.059
## Proportion Var 0.137 0.128 0.119 0.118 0.111 0.103
## Cumulative Var 0.137 0.265 0.384 0.502 0.613 0.716
## Proportion Explained 0.191 0.179 0.166 0.164 0.155 0.144
## Cumulative Proportion 0.191 0.370 0.537 0.701 0.856 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 190 with the objective function = 15.509 with Chi Square = 4660.488
## df of the model are 85 and the objective function was 0.921
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.037
##
## The harmonic n.obs is 309 with the empirical chi square 72.686 with prob < 0.827
## The total n.obs was 309 with Likelihood Chi Square = 273.088 with prob < 1.36e-21
##
## Tucker Lewis Index of factoring reliability = 0.9046
## RMSEA index = 0.0846 and the 90 % confidence intervals are 0.0736 0.0961
## BIC = -214.246
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA2 PA3 PA4
## Correlation of (regression) scores with factors 0.937 0.963 0.946 0.931 0.921
## Multiple R square of scores with factors 0.877 0.927 0.894 0.868 0.847
## Minimum correlation of possible factor scores 0.755 0.855 0.789 0.735 0.695
## PA6
## Correlation of (regression) scores with factors 0.926
## Multiple R square of scores with factors 0.858
## Minimum correlation of possible factor scores 0.717
Removing Im8 (Cross-loadings (High Complexity))
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8")], nfactors = 6,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA3 PA4 PA2 PA6 h2 u2 com
## Im1 0.859 0.853 0.1471 1.32
## Im2 0.844 0.796 0.2045 1.24
## Im3 0.845 0.893 0.1070 1.54
## Im4 0.875 0.928 0.0721 1.45
## Im5 0.598 0.519 0.4808 2.00
## Im6 0.884 0.817 0.1827 1.10
## Im7 0.806 0.768 0.2316 1.38
## Im9 0.464 0.427 0.5730 2.80
## Im10 0.882 0.924 0.0763 1.39
## Im11 0.553 0.455 0.5449 2.08
## Im12 0.861 0.841 0.1592 1.28
## Im13 0.740 0.717 0.2833 1.67
## Im14 0.811 0.824 0.1761 1.54
## Im15 0.599 0.645 0.3550 2.72
## Im16 0.472 0.454 0.5461 2.89
## Im19 0.483 0.405 0.534 0.4664 3.27
## Im20 0.836 0.770 0.2303 1.21
## Im21 0.774 0.682 0.3183 1.29
## Im22 0.803 0.807 0.1933 1.54
##
## PA1 PA5 PA3 PA4 PA2 PA6
## SS loadings 2.730 2.578 2.347 2.243 1.942 1.812
## Proportion Var 0.144 0.136 0.124 0.118 0.102 0.095
## Cumulative Var 0.144 0.279 0.403 0.521 0.623 0.719
## Proportion Explained 0.200 0.189 0.172 0.164 0.142 0.133
## Cumulative Proportion 0.200 0.389 0.561 0.725 0.867 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 171 with the objective function = 14.415 with Chi Square = 4336.563
## df of the model are 72 and the objective function was 0.819
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.039
##
## The harmonic n.obs is 309 with the empirical chi square 67.363 with prob < 0.633
## The total n.obs was 309 with Likelihood Chi Square = 243.141 with prob < 2.01e-20
##
## Tucker Lewis Index of factoring reliability = 0.9011
## RMSEA index = 0.0876 and the 90 % confidence intervals are 0.0758 0.1001
## BIC = -169.66
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA3 PA4 PA2
## Correlation of (regression) scores with factors 0.936 0.963 0.931 0.923 0.930
## Multiple R square of scores with factors 0.877 0.928 0.867 0.852 0.866
## Minimum correlation of possible factor scores 0.754 0.855 0.735 0.703 0.731
## PA6
## Correlation of (regression) scores with factors 0.953
## Multiple R square of scores with factors 0.908
## Minimum correlation of possible factor scores 0.816
Removing Im19 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8","Im19")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8", "Im19")],
## nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA3 PA1 PA2 PA6 h2 u2 com
## Im1 0.876 0.894 0.1059 1.34
## Im2 0.863 0.839 0.1610 1.26
## Im3 0.843 0.886 0.1137 1.53
## Im4 0.884 0.938 0.0620 1.43
## Im5 0.615 0.538 0.4624 1.93
## Im6 0.886 0.820 0.1796 1.09
## Im7 0.805 0.765 0.2346 1.37
## Im9 0.464 0.428 0.5717 2.79
## Im10 0.892 0.937 0.0628 1.38
## Im11 0.553 0.454 0.5462 2.06
## Im12 0.866 0.843 0.1568 1.26
## Im13 0.743 0.715 0.2854 1.64
## Im14 0.812 0.822 0.1779 1.53
## Im15 0.560 0.623 0.3767 3.06
## Im16 0.405 0.396 0.6043 3.39
## Im20 0.844 0.779 0.2213 1.19
## Im21 0.773 0.679 0.3214 1.28
## Im22 0.801 0.805 0.1948 1.54
##
## PA5 PA4 PA3 PA1 PA2 PA6
## SS loadings 2.460 2.387 2.343 2.248 1.932 1.792
## Proportion Var 0.137 0.133 0.130 0.125 0.107 0.100
## Cumulative Var 0.137 0.269 0.399 0.524 0.632 0.731
## Proportion Explained 0.187 0.181 0.178 0.171 0.147 0.136
## Cumulative Proportion 0.187 0.368 0.546 0.717 0.864 1.000
##
## Mean item complexity = 1.7
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 153 with the objective function = 13.52 with Chi Square = 4071.795
## df of the model are 60 and the objective function was 0.48
##
## The root mean square of the residuals (RMSR) is 0.018
## The df corrected root mean square of the residuals is 0.029
##
## The harmonic n.obs is 309 with the empirical chi square 32.204 with prob < 0.999
## The total n.obs was 309 with Likelihood Chi Square = 142.579 with prob < 1.12e-08
##
## Tucker Lewis Index of factoring reliability = 0.9455
## RMSEA index = 0.0667 and the 90 % confidence intervals are 0.0528 0.0811
## BIC = -201.422
## Fit based upon off diagonal values = 0.998
## Measures of factor score adequacy
## PA5 PA4 PA3 PA1 PA2
## Correlation of (regression) scores with factors 0.966 0.950 0.933 0.925 0.931
## Multiple R square of scores with factors 0.933 0.902 0.870 0.856 0.867
## Minimum correlation of possible factor scores 0.867 0.804 0.740 0.712 0.734
## PA6
## Correlation of (regression) scores with factors 0.958
## Multiple R square of scores with factors 0.919
## Minimum correlation of possible factor scores 0.837
6 Factors - Conclusion
We removed Im17, Im18, Im8 and Im9 until achieving clear loadings separation.
fa.diagram(fa_result, sort = TRUE, adj = 1, rsize = 4, e.size = 0.07, main = "Factors Analysis with 6 factors", digits = 2, l.cex = 1)
Most Factors have good loadings (at least 2 above 0.7), while PA6 has only 2 variables loaded.
8 Factors
We will redo the same analysis with 8 factors this time and using varimax rotation as well.
fa_result <- fa(df_1, nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1, nfactors = 8, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA2 PA6 PA7 PA5 PA4 PA8 h2 u2 com
## Im1 0.879 0.949 0.0505 1.49
## Im2 0.822 0.832 0.1679 1.50
## Im3 0.803 0.877 0.1232 1.81
## Im4 0.858 0.939 0.0606 1.61
## Im5 0.620 0.568 0.4319 2.09
## Im6 0.845 0.773 0.2268 1.17
## Im7 0.819 0.808 0.1924 1.42
## Im8 0.619 0.474 0.700 0.2995 2.45
## Im9 0.447 0.444 0.5557 3.44
## Im10 0.870 0.887 0.1126 1.37
## Im11 0.552 0.467 0.5327 2.18
## Im12 0.851 0.841 0.1588 1.35
## Im13 0.724 0.730 0.2703 1.88
## Im14 0.850 0.860 0.1396 1.41
## Im15 0.442 0.423 0.668 0.3322 4.90
## Im16 0.732 0.744 0.2559 1.87
## Im17 0.830 0.923 0.0768 1.77
## Im18 0.757 0.785 0.2147 1.83
## Im19 0.561 0.640 0.3605 3.44
## Im20 0.849 0.790 0.2095 1.20
## Im21 0.769 0.684 0.3161 1.33
## Im22 0.797 0.799 0.2012 1.56
##
## PA3 PA1 PA2 PA6 PA7 PA5 PA4 PA8
## SS loadings 2.441 2.394 2.308 2.244 2.110 2.100 1.718 1.395
## Proportion Var 0.111 0.109 0.105 0.102 0.096 0.095 0.078 0.063
## Cumulative Var 0.111 0.220 0.325 0.427 0.523 0.618 0.696 0.760
## Proportion Explained 0.146 0.143 0.138 0.134 0.126 0.126 0.103 0.083
## Cumulative Proportion 0.146 0.289 0.427 0.562 0.688 0.814 0.917 1.000
##
## Mean item complexity = 2
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 231 with the objective function = 17.57 with Chi Square = 5268.134
## df of the model are 83 and the objective function was 0.479
##
## The root mean square of the residuals (RMSR) is 0.012
## The df corrected root mean square of the residuals is 0.019
##
## The harmonic n.obs is 309 with the empirical chi square 19.471 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 140.985 with prob < 7.46e-05
##
## Tucker Lewis Index of factoring reliability = 0.9674
## RMSEA index = 0.0474 and the 90 % confidence intervals are 0.0337 0.0609
## BIC = -334.883
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA2 PA6 PA7
## Correlation of (regression) scores with factors 0.934 0.958 0.947 0.920 0.924
## Multiple R square of scores with factors 0.872 0.917 0.898 0.846 0.854
## Minimum correlation of possible factor scores 0.745 0.834 0.795 0.692 0.709
## PA5 PA4 PA8
## Correlation of (regression) scores with factors 0.964 0.943 0.838
## Multiple R square of scores with factors 0.930 0.890 0.703
## Minimum correlation of possible factor scores 0.860 0.780 0.405
1. Factor loadings
We can see that we have 2 cross-loadings, Im8 and Im15. Therefore 1 less cross-loadings than 6 Factors Analysis.
Cross-Loadings (Measured with Complexity measure: com > 1):
Im15 > Im8 > 1
2. Communalities
On the table, it is column h2
Low Communalities are :
Im9 < Im11 < 0.5 (same low items communalities than in 6 Factor analysis )
Removing Im15 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im15")], nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15")], nfactors = 8, rotate = "varimax",
## fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA2 PA5 PA7 PA6 PA4 PA8 h2 u2 com
## Im1 0.864 0.935 0.0647 1.55
## Im2 0.825 0.845 0.1553 1.52
## Im3 0.804 0.878 0.1225 1.80
## Im4 0.856 0.936 0.0639 1.61
## Im5 0.625 0.573 0.4275 2.06
## Im6 0.850 0.781 0.2190 1.16
## Im7 0.817 0.805 0.1952 1.42
## Im8 0.623 0.472 0.698 0.3019 2.41
## Im9 0.444 0.442 0.5578 3.46
## Im10 0.881 0.902 0.0979 1.35
## Im11 0.556 0.471 0.5294 2.14
## Im12 0.852 0.841 0.1587 1.34
## Im13 0.722 0.725 0.2749 1.88
## Im14 0.837 0.844 0.1564 1.43
## Im16 0.675 0.677 0.3234 2.11
## Im17 0.826 0.912 0.0883 1.75
## Im18 0.765 0.794 0.2060 1.80
## Im19 0.609 0.686 0.3136 3.02
## Im20 0.854 0.796 0.2037 1.19
## Im21 0.770 0.683 0.3169 1.32
## Im22 0.796 0.795 0.2051 1.55
##
## PA3 PA1 PA2 PA5 PA7 PA6 PA4 PA8
## SS loadings 2.395 2.369 2.303 2.152 2.086 1.841 1.699 1.174
## Proportion Var 0.114 0.113 0.110 0.102 0.099 0.088 0.081 0.056
## Cumulative Var 0.114 0.227 0.336 0.439 0.538 0.626 0.707 0.763
## Proportion Explained 0.150 0.148 0.144 0.134 0.130 0.115 0.106 0.073
## Cumulative Proportion 0.150 0.297 0.441 0.575 0.706 0.821 0.927 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 210 with the objective function = 16.523 with Chi Square = 4959.748
## df of the model are 70 and the objective function was 0.434
##
## The root mean square of the residuals (RMSR) is 0.012
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 309 with the empirical chi square 17.262 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 127.971 with prob < 2.9e-05
##
## Tucker Lewis Index of factoring reliability = 0.9627
## RMSEA index = 0.0517 and the 90 % confidence intervals are 0.0374 0.0659
## BIC = -273.363
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA2 PA5 PA7
## Correlation of (regression) scores with factors 0.935 0.954 0.949 0.919 0.925
## Multiple R square of scores with factors 0.873 0.911 0.900 0.844 0.856
## Minimum correlation of possible factor scores 0.747 0.821 0.800 0.688 0.712
## PA6 PA4 PA8
## Correlation of (regression) scores with factors 0.957 0.938 0.806
## Multiple R square of scores with factors 0.917 0.881 0.649
## Minimum correlation of possible factor scores 0.834 0.761 0.299
Removing Im8 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im15","Im8")], nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15", "Im8")], nfactors = 8,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8 h2 u2 com
## Im1 0.898 0.990 0.0105 1.49
## Im2 0.792 0.800 0.1997 1.61
## Im3 0.800 0.875 0.1250 1.82
## Im4 0.855 0.937 0.0632 1.62
## Im5 0.627 0.575 0.4248 2.06
## Im6 0.885 0.827 0.1732 1.12
## Im7 0.804 0.766 0.2335 1.39
## Im9 0.443 0.440 0.5599 3.42
## Im10 0.914 0.980 0.0201 1.37
## Im11 0.562 0.468 0.5320 2.07
## Im12 0.857 0.845 0.1553 1.32
## Im13 0.722 0.723 0.2773 1.86
## Im14 0.780 0.789 0.2110 1.64
## Im16 0.616 0.601 0.3986 2.35
## Im17 0.864 0.969 0.0311 1.66
## Im18 0.730 0.752 0.2484 1.92
## Im19 0.689 0.758 0.2415 2.40
## Im20 0.852 0.794 0.2064 1.19
## Im21 0.770 0.683 0.3173 1.32
## Im22 0.798 0.798 0.2024 1.55
##
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8
## SS loadings 2.384 2.345 2.169 1.936 1.832 1.788 1.698 1.216
## Proportion Var 0.119 0.117 0.108 0.097 0.092 0.089 0.085 0.061
## Cumulative Var 0.119 0.236 0.345 0.442 0.533 0.623 0.708 0.768
## Proportion Explained 0.155 0.153 0.141 0.126 0.119 0.116 0.110 0.079
## Cumulative Proportion 0.155 0.308 0.449 0.575 0.694 0.810 0.921 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 190 with the objective function = 15.431 with Chi Square = 4636.932
## df of the model are 58 and the objective function was 0.36
##
## The root mean square of the residuals (RMSR) is 0.011
## The df corrected root mean square of the residuals is 0.021
##
## The harmonic n.obs is 309 with the empirical chi square 15.22 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 106.281 with prob < 0.000114
##
## Tucker Lewis Index of factoring reliability = 0.9638
## RMSEA index = 0.0518 and the 90 % confidence intervals are 0.036 0.0674
## BIC = -226.253
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA4 PA5 PA6
## Correlation of (regression) scores with factors 0.934 0.955 0.922 0.931 0.989
## Multiple R square of scores with factors 0.873 0.911 0.850 0.867 0.978
## Minimum correlation of possible factor scores 0.746 0.823 0.700 0.735 0.955
## PA2 PA7 PA8
## Correlation of (regression) scores with factors 0.980 0.973 0.818
## Multiple R square of scores with factors 0.961 0.947 0.669
## Minimum correlation of possible factor scores 0.922 0.895 0.338
8 Factors - Conclusion
We removed Im15, Im8 until achieving clear loadings separation. Therefore we removed 2 variables less than 6 Factors Analysis done previously
fa.diagram(fa_result, sort = TRUE, adj = 1, rsize = 4, e.size = 0.07, main = "Factors Analysis with 8 factors", digits = 2, l.cex = 1)
Most Factors have nice loadings (at least 2 above 0.7), but PA8 has 2 variables with only 0.62-0.69 loadings (but close to 0.7).
Deciding between 6 or 8 Factors
fa_result6 <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8","Im19")], nfactors = 6, fm = "pa", rotate = "varimax")
fa_result8 <- fa(df_1[!names(df_1) %in% c("Im15","Im8")], nfactors = 8, fm = "pa", rotate = "varimax")
fa_result6
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8", "Im19")],
## nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA3 PA1 PA2 PA6 h2 u2 com
## Im1 0.19 0.88 0.22 0.18 0.07 0.08 0.89 0.106 1.3
## Im2 0.22 0.86 0.16 0.10 0.07 0.08 0.84 0.161 1.3
## Im3 0.84 0.21 0.22 0.22 0.12 0.14 0.89 0.114 1.5
## Im4 0.88 0.21 0.18 0.20 0.14 0.13 0.94 0.062 1.4
## Im5 0.62 0.24 0.18 0.20 0.08 0.15 0.54 0.462 1.9
## Im6 0.09 0.06 0.07 0.06 0.89 0.12 0.82 0.180 1.1
## Im7 0.06 0.08 0.11 0.11 0.80 0.29 0.77 0.235 1.4
## Im9 0.19 0.13 0.12 0.36 0.46 0.11 0.43 0.572 2.8
## Im10 0.19 0.10 0.05 0.21 0.23 0.89 0.94 0.063 1.4
## Im11 0.18 0.11 0.18 0.55 0.09 0.25 0.45 0.546 2.1
## Im12 0.17 0.15 0.10 0.87 0.10 0.16 0.84 0.157 1.3
## Im13 0.22 0.24 0.19 0.74 0.14 0.07 0.71 0.285 1.6
## Im14 0.17 0.14 0.06 0.20 0.27 0.81 0.82 0.178 1.5
## Im15 0.26 0.56 0.26 0.37 0.17 0.10 0.62 0.377 3.1
## Im16 0.35 0.40 0.13 0.20 0.06 0.22 0.40 0.604 3.4
## Im20 0.14 0.11 0.84 0.17 0.03 0.04 0.78 0.221 1.2
## Im21 0.16 0.18 0.77 0.12 0.08 0.04 0.68 0.321 1.3
## Im22 0.21 0.24 0.80 0.14 0.19 0.06 0.81 0.195 1.5
##
## PA5 PA4 PA3 PA1 PA2 PA6
## SS loadings 2.46 2.39 2.34 2.25 1.93 1.79
## Proportion Var 0.14 0.13 0.13 0.12 0.11 0.10
## Cumulative Var 0.14 0.27 0.40 0.52 0.63 0.73
## Proportion Explained 0.19 0.18 0.18 0.17 0.15 0.14
## Cumulative Proportion 0.19 0.37 0.55 0.72 0.86 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 153 with the objective function = 13.52 with Chi Square = 4071.79
## df of the model are 60 and the objective function was 0.48
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.03
##
## The harmonic n.obs is 309 with the empirical chi square 32.2 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 142.58 with prob < 1.1e-08
##
## Tucker Lewis Index of factoring reliability = 0.946
## RMSEA index = 0.067 and the 90 % confidence intervals are 0.053 0.081
## BIC = -201.42
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA5 PA4 PA3 PA1 PA2 PA6
## Correlation of (regression) scores with factors 0.97 0.95 0.93 0.93 0.93 0.96
## Multiple R square of scores with factors 0.93 0.90 0.87 0.86 0.87 0.92
## Minimum correlation of possible factor scores 0.87 0.80 0.74 0.71 0.73 0.84
fa_result8
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15", "Im8")], nfactors = 8,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8 h2 u2 com
## Im1 0.23 0.18 0.19 0.07 0.90 0.08 0.13 0.18 0.99 0.010 1.5
## Im2 0.18 0.21 0.11 0.07 0.79 0.08 0.17 0.21 0.80 0.200 1.6
## Im3 0.22 0.80 0.20 0.11 0.14 0.13 0.17 0.26 0.88 0.125 1.8
## Im4 0.18 0.86 0.20 0.13 0.15 0.13 0.16 0.23 0.94 0.063 1.6
## Im5 0.18 0.63 0.19 0.06 0.21 0.17 0.18 0.07 0.58 0.425 2.1
## Im6 0.07 0.08 0.05 0.88 0.04 0.12 0.11 0.05 0.83 0.173 1.1
## Im7 0.11 0.06 0.11 0.80 0.06 0.28 0.07 0.06 0.77 0.234 1.4
## Im9 0.12 0.17 0.33 0.44 0.08 0.12 0.26 0.06 0.44 0.560 3.4
## Im10 0.05 0.16 0.20 0.22 0.05 0.91 0.05 0.15 0.98 0.020 1.4
## Im11 0.18 0.18 0.56 0.09 0.09 0.25 0.08 0.06 0.47 0.532 2.1
## Im12 0.10 0.15 0.86 0.09 0.09 0.14 0.14 0.15 0.84 0.155 1.3
## Im13 0.18 0.19 0.72 0.12 0.18 0.08 0.26 0.11 0.72 0.277 1.9
## Im14 0.06 0.16 0.20 0.28 0.11 0.78 0.05 0.14 0.79 0.211 1.6
## Im16 0.12 0.26 0.15 0.05 0.24 0.19 0.15 0.62 0.60 0.399 2.3
## Im17 0.20 0.20 0.22 0.17 0.19 0.06 0.86 0.17 0.97 0.031 1.7
## Im18 0.19 0.24 0.24 0.16 0.14 0.06 0.73 0.13 0.75 0.248 1.9
## Im19 0.16 0.28 0.20 0.14 0.25 0.16 0.18 0.69 0.76 0.242 2.4
## Im20 0.85 0.12 0.17 0.03 0.07 0.03 0.07 0.12 0.79 0.206 1.2
## Im21 0.77 0.15 0.11 0.08 0.15 0.04 0.15 0.06 0.68 0.317 1.3
## Im22 0.80 0.20 0.13 0.18 0.20 0.07 0.15 0.07 0.80 0.202 1.5
##
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8
## SS loadings 2.38 2.35 2.17 1.94 1.83 1.79 1.70 1.22
## Proportion Var 0.12 0.12 0.11 0.10 0.09 0.09 0.08 0.06
## Cumulative Var 0.12 0.24 0.34 0.44 0.53 0.62 0.71 0.77
## Proportion Explained 0.16 0.15 0.14 0.13 0.12 0.12 0.11 0.08
## Cumulative Proportion 0.16 0.31 0.45 0.57 0.69 0.81 0.92 1.00
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 190 with the objective function = 15.43 with Chi Square = 4636.93
## df of the model are 58 and the objective function was 0.36
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 309 with the empirical chi square 15.22 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 106.28 with prob < 0.00011
##
## Tucker Lewis Index of factoring reliability = 0.964
## RMSEA index = 0.052 and the 90 % confidence intervals are 0.036 0.067
## BIC = -226.25
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA3 PA1 PA4 PA5 PA6 PA2
## Correlation of (regression) scores with factors 0.93 0.95 0.92 0.93 0.99 0.98
## Multiple R square of scores with factors 0.87 0.91 0.85 0.87 0.98 0.96
## Minimum correlation of possible factor scores 0.75 0.82 0.70 0.73 0.96 0.92
## PA7 PA8
## Correlation of (regression) scores with factors 0.97 0.82
## Multiple R square of scores with factors 0.95 0.67
## Minimum correlation of possible factor scores 0.89 0.34
We can see that for 6 Factors Analysis, we obtain a cumulative proportion variance of 0.73. In total, the extracted factors explain 73% of the variance.
For 8 Factors Analysis, we obtain a cumulative proportion variance of 0.77. In total, the extracted factors explain 77% of the variance.
BIC is lower with 8 factors than 6 factors, therefore may allow more generalization in future sample.
We should also check the root mean square of residuals (RMSR). An acceptable value should be closer to 0. In 6 Factors Analysis we have 0.067 and in 8 Factors Analysis we have 0.052 (closer to 0).
Finally, we must check the Tucker-Lewis Index (TLI). An acceptable value must be greater over 0.9. In 6 Factors Analysis we have 0.946 and in 8 Factors Analysis we have 0.964.
Therefore 8 Factors Analysis is overall better, with better BIC, RMSR and TLI and also explain more the total variance with 77%.
Choosing the Optimal Number of Factors in Exploratory Factor Analysis: A Model Selection Perspective
Labeling 8 Factors
colnames(fa_result8$loadings) <- c("Shopping Experience", "Store Decoration","Luxury Brands","French Culture","Product Assortment","Gourmet Food","Trendiness","Professionalism")
Shopping_Experience <- c("Im20","Im21","Im22")
Store_Decoration <- c("Im3","Im4","Im5")
Luxury_Brands <- c("Im11","Im12","Im13")
French_Culture <- c("Im6","Im7","Im9")
Product_Assortment <- c("Im1","Im2")
Gourmet_Food <- c("Im10","Im14")
Trendiness <- c("Im17","Im18")
Professionalism <- c("Im16","Im19")
fa.diagram(fa_result8, sort = TRUE, adj = 1, rsize = 4, e.size = 0.061, main = "Conclusion of Factors Analysis - with 8 labeled factors", digits = 2, l.cex = 1)
Internal consistency reliability
Our next step is to assess the internal consistency reliability of the factors that were identified through the EFA. To accomplish this, we will use Cronbach’s alpha. We will evaluate the reliability of each factor individually by incorporating only the chosen items for that particular factor.
We need to look at:
1. Cronbach’s alpha
The Cronbach’s alpha indicates the internal consistency reliability. The interpretation is detailed as follows (DeVellis, 2012, pp. 95–96):
2. Corrected item-total correlation
There are four item-total correlations provided in psych. We consider these two:
r.cor = Item-total correlation, corrected for item overlap (Revelle, 2017). This is recommended by Revelle (2017).
Ideally must be > 0.5 (Hair et al., 2010)
Shopping Experience
alpha.pa1 <- psych::alpha(df_1[Shopping_Experience])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8947029 0.8951786 0.8514649 0.7400356 8.54004 0.01029882 4.677454 1.341113
## median_r
## 0.7296095
raw_alpha is over 0.7 and average items correlation is above 0.5
Store Decoration
alpha.pa1 <- psych::alpha(df_1[Store_Decoration])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9080535 0.9080107 0.8910999 0.7669149 9.870833 0.009512795 4.909385 1.251142
## median_r
## 0.713708
raw_alpha is over 0.7 and average items correlation is above 0.5
Luxury Brands
alpha.pa1 <- psych::alpha(df_1[Luxury_Brands])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8362383 0.8369592 0.7932492 0.631152 5.133432 0.01631641 5.549083 1.033799
## median_r
## 0.5951255
raw_alpha is over 0.7 and average items correlation is above 0.5
French Culture
alpha.pa1 <- psych::alpha(df_1[French_Culture])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.7974734 0.8043581 0.7661015 0.5781409 4.111379 0.02082013 5.532902 1.061296
## median_r
## 0.4812433
raw_alpha is over 0.7 and average items correlation is above 0.5
Product Assortment
alpha.pa1 <- psych::alpha(df_1[Product_Assortment])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9370045 0.9377564 0.8828073 0.8828073 15.06591 0.007118763 4.847896 1.27965
## median_r
## 0.8828073
raw_alpha is over 0.7 and average items correlation is above 0.5
Gourmet Food
alpha.pa1 <- psych::alpha(df_1[Gourmet_Food])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9327078 0.9327084 0.8739021 0.8739021 13.8607 0.007656198 6.106796 0.8498963
## median_r
## 0.8739021
raw_alpha is over 0.7 and average items correlation is above 0.5
Trendiness
alpha.pa1 <- psych::alpha(df_1[Trendiness])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9155341 0.9175086 0.8475898 0.8475898 11.12248 0.009476765 4.737864 1.287763
## median_r
## 0.8475898
raw_alpha is over 0.7 and average items correlation is above 0.5
Professionalism
alpha.pa1 <- psych::alpha(df_1[Professionalism])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8027054 0.8029503 0.6707744 0.6707744 4.074861 0.02242662 5.082524 1.119696
## median_r
## 0.6707744
raw_alpha is over 0.7 and average items correlation is above 0.5
Our assessment suggests that the factors extracted are reliable, and therefore it is advisable to retain all the items related to these factors.
Dimensions by which Galeries Layfayette is perceived?
fa.diagram(fa_result8, sort = TRUE, adj = 1, rsize = 4, e.size = 0.061, main = "Galeries Lafayette - Perception Dimensions", digits = 2, l.cex = 1)
Dimensions Definitions:
Product Assortment: This group pertains to the variety and range of products offered by the store.
Store Decoration: This group pertains to the aesthetic elements of the store’s interior and exterior, such as the artistic and creative decoration of the sales area, and the appealing arrangement of shop windows.
French Culture: This group pertains to elements of French culture, such as French savoir-vivre, fashion.
Gourmet Food: This group pertains to high-quality offered by the store.
Luxury Brands: This group pertains to the presence of luxury and designer brands in the store.
Professionalism: This group pertains to elements of professionalism, such as the store’s professional appearance towards customers and professional organization.
Trendiness: This group pertains to the store’s ability to stay current and up-to-date with the latest trends in the market.
Shopping Experience: This group pertains to the overall shopping experience, including elements such as relaxing shopping, a great place to stroll, and an intimate shop atmosphere.
Confirmatory Factor Analysis
From Assistant For confirmatory factor analysis (CFA) and structural equation modeling (SEM), please use the raw data (which includes the missing values) to perform CFA and SEM, and use maximum likelihood (ML) to handle the missing data.
df <- read.csv2('Case Study III_Structural Equation Modeling.csv', na.strings = '999', sep = ',')
Summary of CFA Model
model_CFA <-"
Shopping_Experience =~ Im20+Im21+Im22
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im11+Im12+Im13
French_Culture =~ Im6+Im7+Im9
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
fit_CFA
## lavaan 0.6.15 ended normally after 110 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 88
##
## Number of observations 553
## Number of missing patterns 82
##
## Model Test User Model:
##
## Test statistic 383.534
## Degrees of freedom 142
## P-value (Chi-square) 0.000
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 110 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 88
##
## Number of observations 553
## Number of missing patterns 82
##
## Model Test User Model:
##
## Test statistic 383.534
## Degrees of freedom 142
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7789.413
## Degrees of freedom 190
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.968
## Tucker-Lewis Index (TLI) 0.957
##
## Robust Comparative Fit Index (CFI) 0.968
## Robust Tucker-Lewis Index (TLI) 0.957
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -13802.030
## Loglikelihood unrestricted model (H1) -13610.263
##
## Akaike (AIC) 27780.060
## Bayesian (BIC) 28159.811
## Sample-size adjusted Bayesian (SABIC) 27880.460
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.055
## 90 Percent confidence interval - lower 0.049
## 90 Percent confidence interval - upper 0.062
## P-value H_0: RMSEA <= 0.050 0.087
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.057
## 90 Percent confidence interval - lower 0.050
## 90 Percent confidence interval - upper 0.064
## P-value H_0: Robust RMSEA <= 0.050 0.055
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.052
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.264 0.845
## Im21 0.849 0.041 20.818 0.000 1.073 0.783
## Im22 1.060 0.047 22.590 0.000 1.341 0.877
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.717 0.000 1.305 0.969
## Im5 0.818 0.034 23.813 0.000 1.011 0.760
## Luxury_Brands =~
## Im11 1.000 0.703 0.615
## Im12 1.410 0.094 15.048 0.000 0.991 0.872
## Im13 1.464 0.105 13.971 0.000 1.029 0.855
## French_Culture =~
## Im6 1.000 1.002 0.835
## Im7 1.107 0.050 22.219 0.000 1.109 0.919
## Im9 0.789 0.057 13.916 0.000 0.790 0.585
## Product_Assortment =~
## Im1 1.000 1.305 0.980
## Im2 0.885 0.033 27.039 0.000 1.155 0.899
## Gourmet_Food =~
## Im10 1.000 0.812 0.924
## Im14 1.014 0.035 28.587 0.000 0.823 0.952
## Trendiness =~
## Im17 1.000 1.204 0.968
## Im18 0.995 0.041 24.250 0.000 1.197 0.857
## Professionalism =~
## Im16 1.000 0.922 0.766
## Im19 1.045 0.061 17.188 0.000 0.963 0.856
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.729 0.082 8.911 0.000 0.467 0.467
## Luxury_Brands 0.372 0.053 7.009 0.000 0.418 0.418
## French_Culture 0.446 0.066 6.749 0.000 0.352 0.352
## Prdct_Assrtmnt 0.739 0.085 8.728 0.000 0.448 0.448
## Gourmet_Food 0.303 0.051 5.951 0.000 0.295 0.295
## Trendiness 0.786 0.081 9.715 0.000 0.517 0.517
## Professionalsm 0.557 0.069 8.091 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.409 0.051 8.040 0.000 0.471 0.471
## French_Culture 0.449 0.063 7.099 0.000 0.363 0.363
## Prdct_Assrtmnt 0.711 0.079 9.032 0.000 0.440 0.440
## Gourmet_Food 0.418 0.050 8.401 0.000 0.417 0.417
## Trendiness 0.770 0.076 10.141 0.000 0.517 0.517
## Professionalsm 0.744 0.071 10.469 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.239 0.039 6.077 0.000 0.340 0.340
## Prdct_Assrtmnt 0.438 0.054 8.161 0.000 0.478 0.478
## Gourmet_Food 0.258 0.034 7.665 0.000 0.452 0.452
## Trendiness 0.479 0.053 9.044 0.000 0.566 0.566
## Professionalsm 0.343 0.043 7.947 0.000 0.529 0.529
## French_Culture ~~
## Prdct_Assrtmnt 0.321 0.063 5.121 0.000 0.246 0.246
## Gourmet_Food 0.490 0.047 10.536 0.000 0.603 0.603
## Trendiness 0.439 0.062 7.087 0.000 0.364 0.364
## Professionalsm 0.360 0.052 6.937 0.000 0.391 0.391
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.581 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.362 0.000 0.519 0.519
## Professionalsm 0.718 0.072 9.961 0.000 0.597 0.597
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.804 0.000 0.325 0.325
## Professionalsm 0.373 0.043 8.600 0.000 0.498 0.498
## Trendiness ~~
## Professionalsm 0.667 0.066 10.043 0.000 0.601 0.601
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.178 0.000 4.672 3.123
## .Im21 5.139 0.058 87.970 0.000 5.139 3.751
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im3 4.995 0.056 88.565 0.000 4.995 3.786
## .Im4 4.999 0.057 86.988 0.000 4.999 3.712
## .Im5 5.035 0.057 87.848 0.000 5.035 3.787
## .Im11 5.653 0.049 115.273 0.000 5.653 4.943
## .Im12 5.666 0.049 116.092 0.000 5.666 4.983
## .Im13 5.448 0.052 105.619 0.000 5.448 4.524
## .Im6 5.826 0.051 113.774 0.000 5.826 4.856
## .Im7 5.751 0.052 111.068 0.000 5.751 4.766
## .Im9 5.075 0.058 87.408 0.000 5.075 3.756
## .Im1 4.790 0.057 84.203 0.000 4.790 3.597
## .Im2 4.857 0.055 88.356 0.000 4.857 3.779
## .Im10 6.100 0.037 162.799 0.000 6.100 6.937
## .Im14 6.138 0.037 165.865 0.000 6.138 7.093
## .Im17 5.025 0.053 94.529 0.000 5.025 4.041
## .Im18 4.595 0.060 76.455 0.000 4.595 3.287
## .Im16 5.135 0.052 99.150 0.000 5.135 4.269
## .Im19 5.145 0.048 106.953 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.639 0.061 10.445 0.000 0.639 0.285
## .Im21 0.726 0.057 12.672 0.000 0.726 0.387
## .Im22 0.540 0.063 8.515 0.000 0.540 0.231
## .Im3 0.213 0.024 8.760 0.000 0.213 0.123
## .Im4 0.109 0.024 4.524 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im11 0.814 0.055 14.803 0.000 0.814 0.622
## .Im12 0.310 0.040 7.833 0.000 0.310 0.239
## .Im13 0.390 0.045 8.771 0.000 0.390 0.269
## .Im6 0.436 0.042 10.443 0.000 0.436 0.303
## .Im7 0.227 0.042 5.343 0.000 0.227 0.156
## .Im9 1.201 0.080 15.032 0.000 1.201 0.658
## .Im1 0.070 0.050 1.383 0.167 0.070 0.039
## .Im2 0.317 0.044 7.242 0.000 0.317 0.192
## .Im10 0.113 0.019 5.935 0.000 0.113 0.146
## .Im14 0.071 0.019 3.764 0.000 0.071 0.094
## .Im17 0.096 0.045 2.153 0.031 0.096 0.062
## .Im18 0.520 0.054 9.566 0.000 0.520 0.266
## .Im16 0.598 0.052 11.498 0.000 0.598 0.413
## .Im19 0.338 0.045 7.481 0.000 0.338 0.267
## Shoppng_Exprnc 1.599 0.138 11.620 0.000 1.000 1.000
## Store_Decoratn 1.527 0.107 14.325 0.000 1.000 1.000
## Luxury_Brands 0.494 0.067 7.363 0.000 1.000 1.000
## French_Culture 1.003 0.089 11.297 0.000 1.000 1.000
## Prdct_Assrtmnt 1.704 0.118 14.391 0.000 1.000 1.000
## Gourmet_Food 0.660 0.049 13.357 0.000 1.000 1.000
## Trendiness 1.450 0.104 13.998 0.000 1.000 1.000
## Professionalsm 0.849 0.088 9.644 0.000 1.000 1.000
#modificationindices(fit_CFA) %>% filter(mi>10)
CFA Visualization
Model without Covariances
lavaanPlot(model = fit_CFA, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "palegreen4"), coefs = TRUE, sig = 0.05, covs = FALSE, digits = 2)
Model with Covariances
lavaanPlot(model = fit_CFA, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "palegreen4"), coefs = TRUE,sig = 0.05, covs = TRUE, digits = 2)
Structure Equation Modelling
Summary of SEM Model
model_SEM <- " Shopping_Experience =~ Im20+Im21+Im22
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im11+Im12+Im13
French_Culture =~ Im6+Im7+Im9
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19
Consumer_Satisfaction ~ Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism
Affective_Commitment ~ Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism
Consumer_Satisfaction =~ SAT_1 + SAT_2 + SAT_3
Affective_Commitment =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
Repurchase_Intention =~ C_REP1 + C_REP2 + C_REP3
Cocreation_Intention =~ C_CR1 + C_CR3 + C_CR4
Repurchase_Intention ~ Consumer_Satisfaction + Affective_Commitment + Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism
Cocreation_Intention ~ Consumer_Satisfaction + Affective_Commitment + Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism "
fit_SEM <- lavaan::cfa(model_SEM, data=df, missing="ML")
fit_SEM
## lavaan 0.6.15 ended normally after 153 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 164
##
## Number of observations 553
## Number of missing patterns 137
##
## Model Test User Model:
##
## Test statistic 835.621
## Degrees of freedom 430
## P-value (Chi-square) 0.000
summary(fit_SEM,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 153 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 164
##
## Number of observations 553
## Number of missing patterns 137
##
## Model Test User Model:
##
## Test statistic 835.621
## Degrees of freedom 430
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 12305.018
## Degrees of freedom 528
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.966
## Tucker-Lewis Index (TLI) 0.958
##
## Robust Comparative Fit Index (CFI) 0.966
## Robust Tucker-Lewis Index (TLI) 0.958
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -23197.252
## Loglikelihood unrestricted model (H1) -22779.442
##
## Akaike (AIC) 46722.504
## Bayesian (BIC) 47430.223
## Sample-size adjusted Bayesian (SABIC) 46909.614
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.041
## 90 Percent confidence interval - lower 0.037
## 90 Percent confidence interval - upper 0.045
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.042
## 90 Percent confidence interval - lower 0.038
## 90 Percent confidence interval - upper 0.046
## P-value H_0: Robust RMSEA <= 0.050 0.999
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.048
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv
## Shopping_Experience =~
## Im20 1.000 1.262
## Im21 0.857 0.041 20.998 0.000 1.081
## Im22 1.056 0.046 23.027 0.000 1.333
## Store_Decoration =~
## Im3 1.000 1.235
## Im4 1.057 0.025 42.733 0.000 1.306
## Im5 0.818 0.034 23.805 0.000 1.010
## Luxury_Brands =~
## Im11 1.000 0.700
## Im12 1.415 0.094 15.007 0.000 0.991
## Im13 1.468 0.105 13.929 0.000 1.029
## French_Culture =~
## Im6 1.000 1.004
## Im7 1.101 0.049 22.598 0.000 1.106
## Im9 0.788 0.057 13.939 0.000 0.792
## Product_Assortment =~
## Im1 1.000 1.297
## Im2 0.895 0.032 28.321 0.000 1.161
## Gourmet_Food =~
## Im10 1.000 0.811
## Im14 1.018 0.035 28.748 0.000 0.826
## Trendiness =~
## Im17 1.000 1.205
## Im18 0.993 0.041 24.204 0.000 1.196
## Professionalism =~
## Im16 1.000 0.919
## Im19 1.043 0.058 17.879 0.000 0.959
## Consumer_Satisfaction =~
## SAT_1 1.000 0.882
## SAT_2 0.933 0.049 18.916 0.000 0.823
## SAT_3 0.809 0.055 14.802 0.000 0.714
## Affective_Commitment =~
## COM_A1 1.000 1.144
## COM_A2 1.174 0.055 21.504 0.000 1.343
## COM_A3 1.162 0.058 20.027 0.000 1.329
## COM_A4 1.278 0.061 20.800 0.000 1.462
## Repurchase_Intention =~
## C_REP1 1.000 0.596
## C_REP2 0.971 0.043 22.489 0.000 0.579
## C_REP3 0.702 0.037 19.036 0.000 0.419
## Cocreation_Intention =~
## C_CR1 1.000 1.658
## C_CR3 1.033 0.051 20.247 0.000 1.712
## C_CR4 0.964 0.049 19.766 0.000 1.598
## Std.all
##
## 0.844
## 0.789
## 0.873
##
## 0.936
## 0.970
## 0.760
##
## 0.613
## 0.872
## 0.855
##
## 0.837
## 0.916
## 0.586
##
## 0.974
## 0.904
##
## 0.922
## 0.954
##
## 0.969
## 0.856
##
## 0.764
## 0.853
##
## 0.865
## 0.819
## 0.624
##
## 0.796
## 0.836
## 0.817
## 0.842
##
## 0.816
## 0.931
## 0.756
##
## 0.851
## 0.826
## 0.806
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Consumer_Satisfaction ~
## Shoppng_Exprnc 0.051 0.038 1.357 0.175 0.074 0.074
## Store_Decoratn -0.110 0.043 -2.551 0.011 -0.153 -0.153
## Luxury_Brands -0.041 0.075 -0.543 0.587 -0.032 -0.032
## French_Culture 0.109 0.050 2.156 0.031 0.124 0.124
## Prdct_Assrtmnt 0.135 0.040 3.403 0.001 0.198 0.198
## Gourmet_Food 0.075 0.066 1.147 0.251 0.069 0.069
## Trendiness 0.004 0.045 0.089 0.929 0.005 0.005
## Professionalsm 0.461 0.088 5.259 0.000 0.480 0.480
## Affective_Commitment ~
## Shoppng_Exprnc 0.372 0.052 7.186 0.000 0.410 0.410
## Store_Decoratn -0.026 0.054 -0.480 0.631 -0.028 -0.028
## Luxury_Brands -0.193 0.098 -1.959 0.050 -0.118 -0.118
## French_Culture 0.237 0.065 3.621 0.000 0.208 0.208
## Prdct_Assrtmnt 0.102 0.050 2.041 0.041 0.116 0.116
## Gourmet_Food 0.016 0.085 0.194 0.846 0.012 0.012
## Trendiness -0.026 0.058 -0.450 0.653 -0.028 -0.028
## Professionalsm 0.162 0.105 1.541 0.123 0.131 0.131
## Repurchase_Intention ~
## Consmr_Stsfctn 0.215 0.045 4.785 0.000 0.318 0.318
## Affctv_Cmmtmnt 0.186 0.030 6.164 0.000 0.356 0.356
## Shoppng_Exprnc 0.040 0.028 1.435 0.151 0.086 0.086
## Store_Decoratn 0.010 0.029 0.353 0.724 0.021 0.021
## Luxury_Brands 0.078 0.051 1.523 0.128 0.092 0.092
## French_Culture -0.041 0.034 -1.187 0.235 -0.069 -0.069
## Prdct_Assrtmnt -0.017 0.026 -0.675 0.500 -0.038 -0.038
## Gourmet_Food 0.042 0.044 0.963 0.335 0.057 0.057
## Trendiness -0.009 0.030 -0.295 0.768 -0.018 -0.018
## Professionalsm -0.037 0.060 -0.621 0.535 -0.058 -0.058
## Cocreation_Intention ~
## Consmr_Stsfctn -0.356 0.131 -2.710 0.007 -0.190 -0.190
## Affctv_Cmmtmnt 0.548 0.091 6.021 0.000 0.378 0.378
## Shoppng_Exprnc 0.152 0.087 1.738 0.082 0.116 0.116
## Store_Decoratn -0.030 0.090 -0.331 0.741 -0.022 -0.022
## Luxury_Brands 0.201 0.159 1.264 0.206 0.085 0.085
## French_Culture -0.134 0.107 -1.254 0.210 -0.081 -0.081
## Prdct_Assrtmnt -0.007 0.080 -0.091 0.927 -0.006 -0.006
## Gourmet_Food -0.074 0.136 -0.542 0.588 -0.036 -0.036
## Trendiness 0.026 0.093 0.286 0.775 0.019 0.019
## Professionalsm -0.178 0.184 -0.967 0.334 -0.099 -0.099
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.728 0.082 8.916 0.000 0.467 0.467
## Luxury_Brands 0.370 0.053 7.012 0.000 0.418 0.418
## French_Culture 0.446 0.066 6.743 0.000 0.352 0.352
## Prdct_Assrtmnt 0.732 0.084 8.676 0.000 0.447 0.447
## Gourmet_Food 0.302 0.051 5.952 0.000 0.295 0.295
## Trendiness 0.784 0.081 9.709 0.000 0.516 0.516
## Professionalsm 0.552 0.068 8.107 0.000 0.476 0.476
## Store_Decoration ~~
## Luxury_Brands 0.407 0.051 8.023 0.000 0.470 0.470
## French_Culture 0.452 0.063 7.146 0.000 0.364 0.364
## Prdct_Assrtmnt 0.708 0.079 9.017 0.000 0.442 0.442
## Gourmet_Food 0.417 0.050 8.396 0.000 0.417 0.417
## Trendiness 0.769 0.076 10.130 0.000 0.516 0.516
## Professionalsm 0.744 0.070 10.552 0.000 0.655 0.655
## Luxury_Brands ~~
## French_Culture 0.239 0.039 6.077 0.000 0.339 0.339
## Prdct_Assrtmnt 0.433 0.053 8.112 0.000 0.477 0.477
## Gourmet_Food 0.257 0.034 7.648 0.000 0.452 0.452
## Trendiness 0.477 0.053 9.027 0.000 0.565 0.565
## Professionalsm 0.342 0.043 7.967 0.000 0.531 0.531
## French_Culture ~~
## Prdct_Assrtmnt 0.323 0.063 5.160 0.000 0.248 0.248
## Gourmet_Food 0.490 0.047 10.536 0.000 0.602 0.602
## Trendiness 0.443 0.062 7.144 0.000 0.366 0.366
## Professionalsm 0.362 0.052 6.979 0.000 0.392 0.392
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.606 0.000 0.312 0.312
## Trendiness 0.814 0.079 10.355 0.000 0.521 0.521
## Professionalsm 0.717 0.071 10.051 0.000 0.602 0.602
## Gourmet_Food ~~
## Trendiness 0.317 0.047 6.800 0.000 0.325 0.325
## Professionalsm 0.372 0.043 8.640 0.000 0.500 0.500
## Trendiness ~~
## Professionalsm 0.667 0.066 10.108 0.000 0.602 0.602
## .Repurchase_Intention ~~
## .Cocretn_Intntn -0.015 0.038 -0.404 0.686 -0.021 -0.021
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.218 0.000 4.672 3.125
## .Im21 5.139 0.058 87.977 0.000 5.139 3.750
## .Im22 4.280 0.065 65.479 0.000 4.280 2.802
## .Im3 4.995 0.056 88.571 0.000 4.995 3.786
## .Im4 4.999 0.057 87.000 0.000 4.999 3.713
## .Im5 5.036 0.057 87.852 0.000 5.036 3.787
## .Im11 5.653 0.049 115.303 0.000 5.653 4.944
## .Im12 5.665 0.049 116.165 0.000 5.665 4.987
## .Im13 5.448 0.052 105.695 0.000 5.448 4.528
## .Im6 5.827 0.051 113.792 0.000 5.827 4.857
## .Im7 5.752 0.052 111.063 0.000 5.752 4.765
## .Im9 5.075 0.058 87.406 0.000 5.075 3.756
## .Im1 4.792 0.057 84.290 0.000 4.792 3.600
## .Im2 4.858 0.055 88.417 0.000 4.858 3.781
## .Im10 6.100 0.037 162.786 0.000 6.100 6.936
## .Im14 6.138 0.037 165.853 0.000 6.138 7.093
## .Im17 5.025 0.053 94.560 0.000 5.025 4.043
## .Im18 4.595 0.060 76.466 0.000 4.595 3.287
## .Im16 5.135 0.052 99.194 0.000 5.135 4.270
## .Im19 5.145 0.048 107.020 0.000 5.145 4.576
## .SAT_1 5.343 0.043 122.950 0.000 5.343 5.239
## .SAT_2 5.482 0.043 127.738 0.000 5.482 5.455
## .SAT_3 5.458 0.050 109.430 0.000 5.458 4.774
## .COM_A1 4.287 0.061 69.747 0.000 4.287 2.983
## .COM_A2 3.887 0.069 56.667 0.000 3.887 2.420
## .COM_A3 3.543 0.070 50.857 0.000 3.543 2.178
## .COM_A4 3.456 0.074 46.672 0.000 3.456 1.991
## .C_REP1 4.283 0.031 137.513 0.000 4.283 5.859
## .C_REP2 4.507 0.027 169.648 0.000 4.507 7.250
## .C_REP3 4.677 0.024 196.940 0.000 4.677 8.445
## .C_CR1 2.679 0.084 32.075 0.000 2.679 1.375
## .C_CR3 3.261 0.088 36.880 0.000 3.261 1.572
## .C_CR4 2.786 0.085 32.902 0.000 2.786 1.405
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
## .Consmr_Stsfctn 0.000 0.000 0.000
## .Affctv_Cmmtmnt 0.000 0.000 0.000
## .Reprchs_Intntn 0.000 0.000 0.000
## .Cocretn_Intntn 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.644 0.059 10.840 0.000 0.644 0.288
## .Im21 0.708 0.056 12.626 0.000 0.708 0.377
## .Im22 0.557 0.061 9.070 0.000 0.557 0.239
## .Im3 0.214 0.024 8.796 0.000 0.214 0.123
## .Im4 0.108 0.024 4.485 0.000 0.108 0.059
## .Im5 0.747 0.049 15.220 0.000 0.747 0.423
## .Im11 0.817 0.055 14.817 0.000 0.817 0.625
## .Im12 0.309 0.040 7.805 0.000 0.309 0.239
## .Im13 0.390 0.045 8.754 0.000 0.390 0.269
## .Im6 0.431 0.041 10.534 0.000 0.431 0.300
## .Im7 0.234 0.041 5.682 0.000 0.234 0.161
## .Im9 1.199 0.080 15.053 0.000 1.199 0.657
## .Im1 0.089 0.047 1.918 0.055 0.089 0.050
## .Im2 0.302 0.041 7.314 0.000 0.302 0.183
## .Im10 0.116 0.019 6.156 0.000 0.116 0.150
## .Im14 0.067 0.019 3.618 0.000 0.067 0.090
## .Im17 0.094 0.045 2.085 0.037 0.094 0.061
## .Im18 0.523 0.054 9.593 0.000 0.523 0.268
## .Im16 0.602 0.050 11.943 0.000 0.602 0.416
## .Im19 0.345 0.043 7.943 0.000 0.345 0.273
## .SAT_1 0.262 0.034 7.733 0.000 0.262 0.252
## .SAT_2 0.333 0.033 9.973 0.000 0.333 0.329
## .SAT_3 0.798 0.056 14.348 0.000 0.798 0.610
## .COM_A1 0.757 0.058 12.960 0.000 0.757 0.367
## .COM_A2 0.778 0.065 11.906 0.000 0.778 0.301
## .COM_A3 0.881 0.070 12.504 0.000 0.881 0.333
## .COM_A4 0.876 0.075 11.720 0.000 0.876 0.291
## .C_REP1 0.179 0.016 11.295 0.000 0.179 0.335
## .C_REP2 0.051 0.010 4.947 0.000 0.051 0.133
## .C_REP3 0.131 0.009 14.061 0.000 0.131 0.429
## .C_CR1 1.048 0.113 9.309 0.000 1.048 0.276
## .C_CR3 1.369 0.130 10.572 0.000 1.369 0.318
## .C_CR4 1.377 0.122 11.292 0.000 1.377 0.350
## Shoppng_Exprnc 1.591 0.136 11.660 0.000 1.000 1.000
## Store_Decoratn 1.526 0.107 14.319 0.000 1.000 1.000
## Luxury_Brands 0.491 0.067 7.337 0.000 1.000 1.000
## French_Culture 1.008 0.089 11.380 0.000 1.000 1.000
## Prdct_Assrtmnt 1.683 0.117 14.435 0.000 1.000 1.000
## Gourmet_Food 0.657 0.049 13.327 0.000 1.000 1.000
## Trendiness 1.451 0.104 14.017 0.000 1.000 1.000
## Professionalsm 0.845 0.087 9.730 0.000 1.000 1.000
## .Consmr_Stsfctn 0.448 0.047 9.459 0.000 0.576 0.576
## .Affctv_Cmmtmnt 0.859 0.086 10.029 0.000 0.657 0.657
## .Reprchs_Intntn 0.237 0.022 10.939 0.000 0.667 0.667
## .Cocretn_Intntn 2.278 0.208 10.939 0.000 0.829 0.829
SEM Visualization
Model without Covariances
lavaanPlot(model = fit_SEM, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "steelblue4"), coefs = TRUE, sig = 0.05, covs = FALSE, digits = 2)
Model with Covariances
lavaanPlot(model = fit_SEM, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "steelblue4"), coefs = TRUE,sig = 0.05, covs = TRUE, digits = 2)